#include <stdio.h>

int plus(int x, int y)
{
    printf("%d + %d = %d\n", x, y, x + y);
    return 0;
}

/**
 * 回调函数
 */
int call_func(int x, int y, int (*func)(int, int))
{
    return (*func)(x, y);
}

int main(int argc, char *argv[])
{
    // 此处定义了一个指向函数的指针
    // 函数名就是函数的地址
    int (*p_func_plus)(int, int) = plus;
    (*p_func_plus)(123, 789);

    // 等价定义
    int (*p_func_plus_1)(int, int) = &plus;
    (*p_func_plus_1)(122, 888);
    
    call_func(222, 444, p_func_plus);
    return 0;
}
